package com.ruoyi.medication.service;

import com.ruoyi.medication.domain.MedicationStock;
import java.util.List;

/**
 * 药物库存Service接口
 * 
 * @author ruoyi
 * @date 2025-04-12
 */
public interface IMedicationStockService {
  /**
   * 查询药物库存
   * 
   * @param id 药物库存主键
   * @return 药物库存
   */
  public MedicationStock selectMedicationStockById(Long id);

  /**
   * 根据药品ID查询库存
   * 
   * @param medicationId 药品ID
   * @return 药物库存列表
   */
  public List<MedicationStock> selectMedicationStockByMedicationId(Long medicationId);

  /**
   * 查询药物库存列表
   * 
   * @param medicationStock 药物库存
   * @return 药物库存集合
   */
  public List<MedicationStock> selectMedicationStockList(MedicationStock medicationStock);

  /**
   * 查询有效库存列表（未过期且数量大于0）
   * 
   * @return 药物库存集合
   */
  public List<MedicationStock> selectValidStocks();

  /**
   * 新增药物库存
   * 
   * @param medicationStock 药物库存
   * @return 结果
   */
  public int insertMedicationStock(MedicationStock medicationStock);

  /**
   * 修改药物库存
   * 
   * @param medicationStock 药物库存
   * @return 结果
   */
  public int updateMedicationStock(MedicationStock medicationStock);

  /**
   * 批量删除药物库存
   * 
   * @param ids 需要删除的药物库存主键集合
   * @return 结果
   */
  public int deleteMedicationStockByIds(Long[] ids);

  /**
   * 删除药物库存信息
   * 
   * @param id 药物库存主键
   * @return 结果
   */
  public int deleteMedicationStockById(Long id);

  /**
   * 减少药品库存
   *
   * @param medicationId 药品ID
   * @param quantity     减少数量
   * @return 结果
   */
  public int decreaseStock(Long medicationId, Long quantity);
}